#include <iostream>

// 使用预处理指令检测编译器类型
#if defined(__GNUC__) // GCC编译器
// GCC内建函数示例：__builtin_popcount，计算一个无符号整数中位为1的数量
unsigned int countBits(unsigned int value) {
    return __builtin_popcount(value);
}
#elif defined(_MSC_VER) // Visual Studio编译器
#include <intrin.h> // 包含MSVC内建函数所需的头文件
// Visual Studio内建函数示例：__popcnt，计算一个无符号整数中位为1的数量
unsigned int countBits(unsigned int value) {
    return __popcnt(value);
}
#else
// 对于其他编译器，提供一个通用的位计数函数作为回退
unsigned int countBits(unsigned int value) {
    unsigned int count = 0;
    while (value) {
        count += value & 1;
        value >>= 1;
    }
    return count;
}
#endif

int main() {
    unsigned int value = 0b10101010; // 示例整数
    std::cout << "The number of set bits in " << value << " is " << countBits(value) << "." << std::endl;
    return 0;
}